//
//  FYMainViewController.swift
//  dugeweibo
//
//  Created by pelesys on 16/8/4.
//  Copyright © 2016年 杜方宜. All rights reserved.
//

import UIKit

class FYMainViewController: UITabBarController {
    /**
     按钮点击事件的调用是由 运行循环 监听并且以消息机制传递的，因此，按钮监听函数不能单纯设置为 private，否则必须添加 @objc 修饰符
     */
    //按钮的点击事件走的是OC的机制  private 加@objc
    //swift中用到oc的特性 有想兼容swift可以在前边加@objc
   @objc private func composeDidClick(){
        //打印方法
        print(#function )
        //1.创建发布控制器
        let compose = FYComposeViewController()
        //2.包装导航控制器
        let nav = UINavigationController(rootViewController: compose)
        //3.弹出控制器
    present(nav, animated: true, completion: nil)
    
    }

    override func viewDidLoad() {
        super.viewDidLoad()
     //由于tabbar只读 不能直接操作,如果要修改,可以使用KVC
        let mainTabBar = FYMainTbaBar()
     //KVC 赋值
     setValue(mainTabBar, forKey: "tabBar")
     
     //添加子视图控制器
    
        addChildViewControllers()
     //classForCoder打印函数的类名
        print(tabBar.classForCoder)
        
     //设置点击事件
        mainTabBar.composeBtn.addTarget(self, action: #selector(FYMainViewController.composeDidClick), for: .touchUpInside)
        
    }
    // 不加private 外界通过这个类能访问到这个方法  加上后只有在本类才可以访问
    private func addChildViewControllers(){
        //CVR设计模式
        addChildViewController(vc: FYHomeTableViewController(), title: "首页", imageName: "tabbar_home")
        addChildViewController(vc: FYMessageTableViewController(), title: "消息", imageName: "tabbar_message_center")
        addChildViewController(vc: FYDiscoverTableViewController(), title: "发现", imageName: "tabbar_discover")
        addChildViewController(vc: FYProfileTableViewController(), title: "我", imageName: "tabbar_profile")
    
    }
    //重载方法
    /**
     当前类已有方法 函数参数 参数类型不一样
     */
    private func addChildViewController(vc:UIViewController,title:String,imageName:String) {
//        self.tabBar.tintColor = UIColor.orangeColor();
//        let home = FYHomeTableViewController()
        //实例化导航控制器
        let nav = UINavigationController(rootViewController: vc)
        //视图层级结构 tab->nav->home title设置由内向外设置标题  通过最外层设置title可能导致其他控制器title没设置上
        //        title = "首页"
        //        nav.title = "首页"
        vc.title = title
        vc.tabBarItem.image = UIImage(named: imageName)
//        vc.tabBarItem.selectedImage = UIImage(named:imageName + "_highlighted")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
//        vc.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.orangeColor()], forState: .Normal)
        //显示原始图片 可以在图片管理器 Render as
        //添加 系统方法
        addChild(nav);
        
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    

    override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
        print(item)
    }
   

}
